In [1]:
import random
class Tamagotchi:
"""Clase que representa a una mascota virtual o 'Tamagotchi'.
Juego de palabras entre tamago y tomodachi (?)
"""
VALOR_INICIAL_HAMBRE = 50
VALOR_INICIAL_ENERGIA = 50
VALOR_INICIAL_FELICIDAD = 0
GASTO_ENERGIA_JUGAR = 10
AUMENTO_FELICIDAD_JUGAR = 10
GASTO_RECURSOS_HORA = 3
PROBABILIDAD_ENFERMAR = 0.3
def __init__(self):
"""Pos: Devuelve un Tamagotchi de 0 dias de vida y con la mitad de la energia y hambre"""
self.edad = 0
self.hambre = Tamagotchi.VALOR_INICIAL_HAMBRE
self.energia = Tamagotchi.VALOR_INICIAL_ENERGIA
self.felicidad = Tamagotchi.VALOR_INICIAL_FELICIDAD
self.enfermo = False
def __nivelar(self):
"""Nivela todos los atributos para que esten dentro de los margenes predefinidos"""
if self.hambre < 0:
self.hambre = 0
if self.energia > 100:
self.energia = 100
elif self.energia < 0:
self.energia = 0
if self.felicidad > 50:
self.felicidad = 50
elif self.felicidad < -50:
self.felicidad = -50
def jugar(self):
"""El Tamagotchi juega
Pos: La felicidad aumenta y la energia disminuye; si tenia energia suficiente"""
if self.energia < Tamagotchi.GASTO_ENERGIA_JUGAR:
return
self.felicidad += Tamagotchi.AUMENTO_FELICIDAD_JUGAR
self.energia -= Tamagotchi.GASTO_ENERGIA_JUGAR
self.__nivelar()
def vivir(self,cantidad_horas = 1):
"""Simula "cantidad_horas" horas de vida de un Tamagotchi.
Pos: el Tamagochi aumenta su edad acorde al tiempo. Gasta sus 'recursos' acorde al tiempo
"""
self.edad += cantidad_horas / 24 #la edad esta expresada en años
self.hambre += cantidad_horas * Tamagotchi.GASTO_RECURSOS_HORA
self.energia -= cantidad_horas * Tamagotchi.GASTO_RECURSOS_HORA
self.felicidad -= cantidad_horas * Tamagotchi.GASTO_RECURSOS_HORA
self.enfermo = self.enfermo or random.random() < Tamagotchi.PROBABILIDAD_ENFERMAR
self.__nivelar()
def esta_vivo(self):
"""Indica si el Tamagotchi sigue vio o no"""
return self.hambre < 100
def tiene_hambre(self):
"""Indica si el Tamagotchi tiene mas del limite aceptable de hambre"""
return self.hambre > 45
def esta_feliz(self):
"""Indica si el Tamagotchi tiene mas del limite aceptable de felicidad"""
return self.felicidad > 0
def esta_cansado(self):
"""Indica si el Tamagotchi tiene mas del limite aceptable de energia"""
return self.energia <= 0
def comer(self,alimento):
"""Alimenta al Tamagotchi con el alimento pasado como parametro"""
self.hambre -= alimento.obtener_valor_nutricional()
self.__nivelar()
In [2]:
tomodachi = Tamagotchi()
for x in range(6):
tomodachi.jugar()
print("Esta feliz: ",tomodachi.esta_feliz(), ". Esta cansado:",tomodachi.esta_cansado())
In [3]:
class Alimento:
def __init__(self,nombre,valor_nutricional):
""" """
self.nombre = nombre
self.valor_nutricional = valor_nutricional
def obtener_valor_nutricional(self):
""" """
return self.valor_nutricional
In [4]:
print("Tiene hambre: ",tomodachi.tiene_hambre())
tomodachi.vivir(4)
print("Tiene hambre: ",tomodachi.tiene_hambre())
zanahoria = Alimento("Zanahoria",20)
tomodachi.comer(zanahoria)
print("Tiene hambre: ",tomodachi.tiene_hambre())
In [ ]: